package io.github.wslxm.springbootplus2.manage.sys.dao;

import io.github.wslxm.springbootplus2.manage.sys.model.entity.SysRole;
import io.github.wslxm.springbootplus2.manage.sys.model.vo.next.SysUserRolesVO;

import java.util.List;
import java.util.Map;

public interface SysRoleDao {

    /**
     * 通过角色 code 获取角色id
     *
     * @param code
     * @return
     */
    String findRoleIdByCode(String code);

    /**
     * 通过角色codes获取角色ids
     *
     * @param codes
     * @return key=code value=id
     */
    Map<String,String> findRoleIdsByCodes(List<String> codes);

    /**
     * 获取超管角色数据
     *
     * @return io.github.wslxm.springbootplus2.manage.admin.model.entity.Role
     * @version 1.0.0
     */
    SysRole findSuperManage();


    /**
     * 判断指定用户是否是超管
     *
     * @param userId
     * @return
     */
    boolean isSuperManageByUserId(String userId);


    /**
     * 判断指定角色IDS 是否包含超管
     *
     * @param roleIds
     * @return
     */
    boolean isSuperManageByRoleIds(List<String> roleIds);

    /**
     * 查询指定用户的当前角色列表
     *
     * @param userId
     * @return Map<用户id, 用户角色列表>
     * @author wangsong
     * @date 2022/8/18 14:31
     */
    List<SysUserRolesVO> findRolesByUserId(String userId);

    /**
     * 查询指定用户的当前角色 codes 列表
     *
     * @param userId
     * @return Map<用户id, 用户角色列表>
     * @author wangsong
     * @date 2022/8/18 14:31
     */
    List<String> findRoleCodesByUserId(String userId);

    /**
     * 查询指定用户角色列表（多用户）
     *
     * @param userIds
     * @return Map<用户id, 用户角色列表>
     * @author wangsong
     * @date 2022/8/18 14:31
     */
    Map<String, List<SysUserRolesVO>> findRolesByUserIds(List<String> userIds);

}
